/*
 * mysql_test.cpp
 *
 *  Created on: 2018年3月23日
 *      Author: yaoqiaobing
 */

#include "test/lib_acl_cpp/mysql_cpp_test.h"
#include "lib_acl.hpp"
#include "unistd.h"
#include <iostream>

using namespace acl;

int mysql_cpp_test(int argc, char *argv[]) {
	// 1.初始化mysql数据库连接池
	db_pool *dp = new mysql_pool("116.196.78.242:3306", "db_admin", "root", "123456");
    // 连接池信息
	std::cout << dp->get_pool_info() << std::endl;
	// 已经建立连接的句柄(包括使用和空闲状态的)
	dp->get_count();

//	// 设置数据库连接池中空闲连接的生存周期(秒)
//	dp->set_idle(1);
//	dp->set_check_inter(2);

	// 2.
	std::list<db_handle*> dbs;
	for (int i = 0; i < 10; i++)
	{
		// 从连接池中取出数据库句柄
		db_handle* dh = (db_handle*) dp->peek();

		dbs.push_back(dh);
	}

	std::list<db_handle*>::iterator it = dbs.begin();
	for (; it != dbs.end(); ++it)
	{
		// 将归还的数据库句柄加入到连接池中
		dp->put(*it);
		sleep(1);
	}

	dbs.clear();

	printf("dbpool count: %d\r\n", dp->get_dbcount());
	sleep(2);
	db_handle* dh = (db_handle*) dp->peek();
	dp->put(dh);
	printf("dbpool count: %d\r\n", dp->get_dbcount());
	delete dp;

	return 0;
}

